home *** CD-ROM | disk | FTP | other *** search
/ SGI Varsity Update 1998 August / SGI Varsity Update 1998 August.iso / dist / dist6.5 / il_dev.idb / usr / include / il / ilThread.h.z / ilThread.h
C/C++ Source or Header  |  1998-07-29  |  2KB  |  84 lines

  1. #if 0 
  2.  
  3.     Copyright (c) 1991 SGI   All Rights Reserved
  4.     THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF SGI
  5.     The copyright notice above does not evidence any
  6.     actual or intended publication of such source code,
  7.     and is an unpublished work by Silicon Graphics, Inc.
  8.     This material contains CONFIDENTIAL INFORMATION that
  9.     is the property of Silicon Graphics, Inc. Any use,
  10.     duplication or disclosure not specifically authorized
  11.     by Silicon Graphics is strictly prohibited.
  12.     
  13.     RESTRICTED RIGHTS LEGEND:
  14.     
  15.     Use, duplication or disclosure by the Government is
  16.     subject to restrictions as set forth in subdivision
  17.     (c)(1)(ii) of the Rights in Technical Data and Computer
  18.     Software clause at DFARS 52.227-7013, and/or in similar
  19.     or successor clauses in the FAR, DOD or NASA FAR
  20.     Supplement.  Unpublished- rights reserved under the
  21.     Copyright Laws of the United States.  Contractor is
  22.     SILICON GRAPHICS, INC., 2011 N. Shoreline Blvd.,
  23.     Mountain View, CA 94039-7311
  24.  
  25. #endif
  26. /*
  27.     This class creates a shared group process.
  28. */
  29. #ifndef _ilThread_h_
  30. #define _ilThread_h_
  31.  
  32. #include <sys/types.h>
  33. #include <il/ilDefs.h>
  34. #ifdef IL_MP
  35. #include <ulocks.h>
  36. #endif
  37. #include <il/ilArena.h>
  38. #include <ifl/iflList.h>
  39.  
  40. typedef void ilThreadRtn(void* arg);
  41.  
  42. class ilThreadItem : public iflListItem {};
  43.  
  44. class ilThread : private ilThreadItem {
  45. public:
  46.     // create shared group process
  47.     ilThread(ilThreadRtn* rtn, void* arg=NULL); 
  48.     ilThread(pid_t pid=0);  
  49.     ~ilThread();
  50.     
  51.     static int block();
  52.     static int unblock(pid_t pid);
  53.     int unblock() { return unblock(pid); }
  54.     static pid_t getCurrentPID();
  55.     pid_t getPID() { return pid; }
  56.     
  57.     static ilThread* getCurrentThread();
  58.     
  59.     static int numProcessors();
  60.     
  61.     static ilArena* getArena();
  62.  
  63.     static void allocPrivate(void*& data, int size);
  64.  
  65.     // kill off all the IL threads that have been created
  66.     static void shutdown();
  67.  
  68. protected:
  69.     void setRoutine(ilThreadRtn* rtn, void* arg=NULL);
  70.  
  71. #ifdef IL_MP
  72. private:
  73.     void init(pid_t Pid);
  74.     static void launch(void* arg);
  75.  
  76.     ilThreadRtn* userRtn;   // pointer to user's thread routine
  77.     void* userArg;        // argument to pass to user's routine
  78.     int created;        // thread was actually created, not passed in
  79.     pid_t pid;            // pid of this thread
  80. #endif
  81. };
  82.  
  83. #endif
  84.